This disclosure relates to keyboard accelerators, and more particularly, but not exclusively, to methods, apparatus, and articles of manufacture for enabling keyboard accelerators in software applications implemented via a browser application.
Contemporary computer users typically have multiple input devices at their disposal, such as a keyboard, a mouse, a stylus, or the like, for interacting with a particular software application being executed by the computer""s processor. These interactions may include inputting information or data for use by the software application, or the selection of certain functions or commands within the software application to format text, to open a new or existing file, or to save, copy, or print all or a portion of a document or file, or the like.
Often times, a software application will include a graphical user-interface (xe2x80x9cUIxe2x80x9d), providing a plurality of icons representing objects that can be manipulated by the user to control certain computer actions simply by xe2x80x9cclickingxe2x80x9d on the desired icon with the mouse, for example. For instance, a word processing software application may provide a graphical UI that includes an icon with a bold capital xe2x80x9cBxe2x80x9d to allow the user to toggle a boldface text attribute. Because many computer users find it less efficient to frequently move a hand from the keyboard to the mouse in order to click on a particular icon, and then reposition their hand on the keyboard to continue entering information, many software applications enable keyboard accelerators. Keyboard accelerators allow a user to initiate the same command or function, represented by the icon, by typing a particular key sequence, such as for example, xe2x80x9cCtrl+B.xe2x80x9d xe2x80x9cCtrl+Bxe2x80x9d is nearly universally used by Windows(copyright) applications as a toggle for the boldface text attribute. Simultaneously pressing the xe2x80x9cCtrlxe2x80x9d key and the xe2x80x9cBxe2x80x9d key on the keyboard toggles the boldface text attribute on and off in the same manner as does repeatedly xe2x80x9cclickingxe2x80x9d the xe2x80x9cBxe2x80x9d icon, mentioned above. Similarly, particular keystroke combinations may be used to save a document or file (e.g., xe2x80x9cCtrl+Sxe2x80x9d), or to print a current document (e.g., xe2x80x9cCtrl+Pxe2x80x9d), or the like. Many such keystroke combinations may be defined as defaults, native to one or more applications xe2x80x9crunningxe2x80x9d on a computer system.
Each input action (xe2x80x9ceventxe2x80x9d) taken by a user, such as a keystroke or a mouse-button click, is generally stored in a system event queue until it may be retrieved by the operating system or software application following the completion of any current operation. The reader will appreciate that in the context of modern operating systems, such as a Windows(copyright) operating system, several software applications may be xe2x80x9crunningxe2x80x9d simultaneously. Consequently, the user must identify an active application for which inputs are intended. In the Windows(copyright) operating system for example, the active application corresponds to the active window selected by the user, and will receive the input from the user and carry out its functions accordingly.
In recent years, the proliferation of computers among the consuming public and within organizations has contributed to an increase in electronic commerce and intra-organizational procedures conducted via networks, such as the Internet, wide area networks (xe2x80x9cWANsxe2x80x9d), local area networks (xe2x80x9cLANsxe2x80x9d), intranets, or the like. As such, software applications are more frequently maintained at one location, and xe2x80x9cservedxe2x80x9d to a plurality of end users, such as consumers or intranet users by a server or other computer system via the network. Hereinafter, these software applications will be referred to as xe2x80x9cremote applications.xe2x80x9d In these situations, the remote application itself remains primarily stored in a memory or storage location accessible by the server, and end user interaction with the remote application is facilitated via communications transmitted over the network as packets of information. The packets of information enable implementation of the remote application via a browser application, typically stored locally on the end user""s computer.
A browser application comprises software that allows an end user to view documents and access files and other software related to those documents by interpreting code (e.g., hyper text markup language xe2x80x9cHTML,xe2x80x9d java, java script, or the like) transmitted over the network. While interacting with the remote application, the browser application comprises the active application xe2x80x9crunningxe2x80x9d on the end user""s computer. As such, user input, such as keystroke combinations and other events are treated as input to the browser application.
As a consequence of the foregoing, an end user interacting with the remote application via his or her browser application is, at best, limited in terms of using keyboard accelerators to accomplish tasks within the remote application because keystroke combinations will be retrieved by the browser application and used to implement its own functions. For example, a remote application provider may define a default keystroke sequence such as xe2x80x9cCtrl+Nxe2x80x9d to be associated with a command to open a new record. However, the browser application, through which the remote application is being implemented, will retrieve the keystroke sequence xe2x80x9cCtrl+Nxe2x80x9d from the event queue and open a new browser page, for example. While those key sequences not mapped to a native browser command may be used as keyboard accelerators for the remote application in some cases, various browser applications, or various versions of a particular browser application may have different key sequences mapped to different commands, thereby preventing the remote application provider from furnishing a common set of keyboard accelerators that will function effectively for all potential end users.